/**    
 * 文件名：FormatStyle.java</br>
 *    
 * 版本信息：v1.0</br>
 * 日期：2017年7月11日</br>
 * © 2005-2017 雷技信息科技（上海）有限公司版权所有</br>
 *
 */
package com.logic.common.sqlformat;

/**
 *
 * 项目名称：system-server</br>
 * 类名称：FormatStyle</br>
 * 类描述：</br>
 * 创建人：Aaron</br>
 * 创建时间：2017年7月11日 下午6:10:45</br>
 * 
 * @version 1.0
 *
 */
public class FormatStyle
{
    public static final FormatStyle BASIC = new FormatStyle("basic", new BasicFormatterImpl());
    
    public static final FormatStyle DDL = new FormatStyle("ddl", new DDLFormatterImpl());
    
    public static final FormatStyle NONE = new FormatStyle("none", new NoFormatImpl());
    
    private final String name;
    
    private final Formatter formatter;
    
    private FormatStyle(String name, Formatter formatter)
    {
        this.name = name;
        this.formatter = formatter;
    }
    
    public String getName()
    {
        return this.name;
    }
    
    public Formatter getFormatter()
    {
        return this.formatter;
    }
    
    public boolean equals(Object o)
    {
        if (this == o)
        {
            return true;
        }
        if ((o == null) || (getClass() != o.getClass()))
        {
            return false;
        }
        
        FormatStyle that = (FormatStyle)o;
        
        return this.name.equals(that.name);
    }
    
    public int hashCode()
    {
        return this.name.hashCode();
    }
    
    private static class NoFormatImpl implements Formatter
    {
        public String format(String source)
        {
            return source;
        }
    }
}
